package org.LowAltitudeEconomy.controller;

import org.LowAltitudeEconomy.Utils.Md5Util;
import org.LowAltitudeEconomy.pojo.Result;
import org.LowAltitudeEconomy.pojo.User;
import org.LowAltitudeEconomy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    //用户注册
    @PostMapping("/register")
    public Result register(String username,String password,String phone,String full_name) {
        User u = userService.findUserByUsername(username);
        if (u == null) {
            //没有占用
            //没有注册
            userService.register(username,password,phone,full_name);
            return Result.success();
        }else{
            //已经占用
            return Result.error("用户名已被占用");
        }
    }


    //用户登录
    @PostMapping("/login")
    public Result<String> login(String username, String password) {
        // 1. 空值校验
        if (username == null || password == null) {
            return Result.error("用户名和密码不能为空");
        }

        // 2. 查询用户
        User u = userService.findUserByUsername(username);
        if (u == null) {
            return Result.error("用户不存在");
        }

        // 3. 密码验证（先处理管理员特殊逻辑）
        String dbPassword = u.getPassword();
        if (dbPassword == null) {
            return Result.error("用户密码未设置，请联系管理员");
        }

        // 4. 管理员密码判断（建议不要硬编码密码）
        if ("admin".equals(dbPassword)) { // 隐患：硬编码密码，建议从配置或数据库获取
            return Result.success("管理员登录成功");
        }

        // 5. 普通用户密码验证（MD5加密后比对）
        String inputPasswordMd5 = Md5Util.getMD5String(password);
        if (inputPasswordMd5.equals(dbPassword)) {
            return Result.success("用户登录成功");
        } else {
            return Result.error("用户名或密码错误");
        }
    }


}
